package xml

import (
	"encoding/xml"

	"github.com/anydev/simple_gin/pkg/config/encoder"
)

// XML 编码器
type xmlEncoder struct{}

// Encode 编码配置数据为 XML 格式的字节流
func (x xmlEncoder) Encode(v interface{}) ([]byte, error) {
	return xml.Marshal(v)
}

// Decode 解码 XML 格式的字节流为配置数据
func (x xmlEncoder) Decode(d []byte, v interface{}) error {
	return xml.Unmarshal(d, v)
}

// String 返回编码器的名称
func (x xmlEncoder) String() string {
	return "xml"
}

// NewEncoder 创建一个新的 XML 编码器
func NewEncoder() encoder.Encoder {
	return xmlEncoder{}
}
